iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
Modern Web

LV的全端開發體驗系列 第 30

Day30 設定預設管理者帳號-Laravel Seeding

  • 分享至 

  • xImage
  •  

時間飛快的來到了第三十天了,本來想寫寫回顧和心得就可以混過去了,但臨時想到一件重要的事,在一開始建立帳號時,我有提到,我們預設註冊的使用者都是user的角色,然後我們手動去資料表直接改了一個 admin 來做為管理者帳號使用,當時我說可能要做一個後台功能來改變使用者的角色,但總不能讓這個功能是每個剛註的使用者都可以自由使用吧;

也就是說,我們應該要設立一個系統一開始就存在的管理者角色,雖然這件小事,用上面說的直接改資料表欄位也是可以做到的,但 Laravel 提供的 Seeding 功能可以更優雅的完成這個功能,這樣將來我們要把系統移到別的伺服器安裝時,只要下下指令就可以有一個初始管理者的帳號了。

Seeding 這個功能在 Database中,主要功能是用來建立一些種子資料,常常會和工廠模式並用,可以快速產生大量的假資料,但我們現在不是要產生假資料,而是系統的初始用戶資料。

建立一個 seeder

php artisan make:seeder AdminSeeder

database\seeders\AdminSeeder.php

namespace Database\Seeders;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class AdminSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name'=>'admin',
            'role'=>'admin',
            'email'=>'admin@quizzes.com',
            'password'=>Hash::make('Admin@12344321')
        ]);
    }
}

因為這個管理者的帳號比較特別,所以只要個別執行一次就好了,如果是有多個Seeder要執行的話,可以在 database\seeders\DatabaseSeeder.php 中呼叫多個 Seeder 來一次執行完畢。

執行單一 Seeder 語法:

php artisan db:seed --class=AdminSeeder

這樣就會在我們的資料表中新增一筆admin者帳號,可以登入來看看

這樣就不需要重置專案時還要再去註冊個帳號然後再去手動改成管理者了,滿方便的。

賽後心得

第一次參賽,寫到第十天時,我就發現我太小看這專案了,也小看鐵人賽了,尤其是在平常還要上班的狀況下,能抽出來又做專案又寫文章的時間真的不多。

這次的體驗主要是為了紀錄一下自己的專案製作流程,從一開始的簡單規劃,建立畫面,到中間調整,修改,遇到一些情境難以自己處理時,如何引用別人做好的套件或功能來完善自己的專案;最常遇到的狀況是在一股腦把主要功能做完時,才發現可能會衍生別的問題,如何善用框架或套件
提供的功能,快速的應對各種問題,是自己這一兩年來做了幾個案子的心得。

做了幾個專案後真的能體會許多前輩說的:"程式語言只是工具,重要的是如何運用這些工具來解決問題",往往做到最後會發現需要的不是單一的技術、框架、或套件,而是如何整合。

所以這次選擇的主題就是分享自己如何整合各項自己知道的東西,用來解決一個問題,當中有很多冒進,失算,不成熟,都是過去曾發生的狀況,全都拿來放在這次的分享,也當成是給自己的一個提醒。

明年應該還是會參加鐵人賽,但會更早規劃主題內容及呈現方式。


上一篇
Day29 測驗狀態紀錄-前端計時器、取消作答、提前結束
系列文
LV的全端開發體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言